IRQ: IO-APIC support End Of Interrupt for older IO-APICs
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 13 Sep 2011 09:33:10 +0000 (10:33 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 13 Sep 2011 09:33:10 +0000 (10:33 +0100)
commitac710413f6f4e63a41906b37be8f90e33e4b7e8f
tree62f44c8a2bab72aae23498d48b9316cc1476e89a
parent2569814496e2c7e61a06d9ddc48defd28759dd96
IRQ: IO-APIC support End Of Interrupt for older IO-APICs

The old io_apic_eoi() function using the EOI register only works for
IO-APICs with a version of 0x20.  Older IO-APICs do not have an EOI
register so line level interrupts have to be EOI'd by flipping the
mode to edge and back, which clears the IRR and Delivery Status bits.

This patch replaces the current io_apic_eoi() function with one which
takes into account the version of the IO-APIC and EOI's
appropriately.

v2: make recursive call to __io_apic_eoi() to reduce code size.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/io_apic.c
xen/include/asm-x86/io_apic.h